//
//package com.plian.system.service.yth.impl;
//
//import com.baomidou.dynamic.datasource.annotation.DS;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.plian.Tools.CollectionUtil;
//import com.plian.Tools.DateUtil;
//import com.plian.system.entity.yth.nsgl.SznbAuditWorkSystem;
//import com.plian.system.mapper.yth.nsgl.SznbAuditWorkSystemMapper;
//import com.plian.system.service.yth.ISznbAuditWorkSystemService;
//import lombok.AllArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Propagation;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.time.ZoneId;
//import java.util.*;
//import java.util.stream.Collectors;
//
///**
// * 数据采集-内审工作制度主表实体类
// *
// * @author baiyang
// * @since 2023-03-14
// */
//@Slf4j
//@Service
//@DS("slave_1")
//public class SznbAuditWorkSystemServiceImpl extends ServiceImpl<SznbAuditWorkSystemMapper, SznbAuditWorkSystem> implements ISznbAuditWorkSystemService {
//
//
//    private final String YTH_DATASOURCE_TYPE = "3";
//
//
//    @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
//    @DS("slave_1")
//    @Override
//    public List<IamWorkSystemVO> getSyncData(Date startTime, Date endTime) {
//        List<IamWorkSystemVO> iamWorkSystemVOS = new ArrayList<>();
//        List<SznbAuditWorkSystem> ythAuditWorkSystems = list(new LambdaQueryWrapper<SznbAuditWorkSystem>()
//                .gt(Optional.ofNullable(startTime).isPresent(), SznbAuditWorkSystem::getCreateTime, startTime)
//                .le(Optional.ofNullable(endTime).isPresent(), SznbAuditWorkSystem::getCreateTime, endTime)
//        );
//        if (CollectionUtil.isNotEmpty(ythAuditWorkSystems)) {
//            iamWorkSystemVOS = conversion(ythAuditWorkSystems);
//        }
//        return iamWorkSystemVOS;
//    }
//
//    /**
//     * 转换对象
//     *
//     * @param ythAuditWorkSystems
//     * @return
//     */
//    private List<IamWorkSystemVO> conversion(List<SznbAuditWorkSystem> ythAuditWorkSystems) {
//
//        List<IamWorkSystemVO> iamWorkSystemVOList = new ArrayList<>();
//
//        Map<Long, List<SznbAuditWorkSystem>> ythAuditWorkSystemMap = ythAuditWorkSystems.stream().filter(e -> e.getAuditOrgId() != null).collect(Collectors.groupingBy(e -> e.getAuditOrgId()));
//
//        for (Map.Entry<Long, List<SznbAuditWorkSystem>> map : ythAuditWorkSystemMap.entrySet()) {
//            Long auditOrgId = map.getKey();
//            List<SznbAuditWorkSystem> auditWorkSystems = map.getValue();
//            //主表
//            IamWorkSystemVO systemVO = new IamWorkSystemVO();
//            //制度详情
//            List<IamWorkSystemDetailVO> systemDetailList = new ArrayList<>();
//            if (CollectionUtil.isNotEmpty(auditWorkSystems)) {
//
//                SznbAuditWorkSystem ythAuditWorkSystemMaster = auditWorkSystems.get(0);
//                systemVO.setEnterpriseId(Objects.toString(ythAuditWorkSystemMaster.getReportOrgId(), null));
//                systemVO.setEnterpriseName(ythAuditWorkSystemMaster.getReportOrgName());
//                systemVO.setInstitutionPrincipal(ythAuditWorkSystemMaster.getAuditOrgPerson());
//                systemVO.setInstitutionManager(ythAuditWorkSystemMaster.getAuditPersonnel());
//                systemVO.setFillingTime(ythAuditWorkSystemMaster.getReportTime() != null ? DateUtil.formatDate(Date.from(ythAuditWorkSystemMaster.getReportTime().atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())) : null);
//                //detail
//                for (SznbAuditWorkSystem ythAuditWorkSystem : auditWorkSystems) {
//                    IamWorkSystemDetailVO detailVO = new IamWorkSystemDetailVO();
//                    detailVO.setEnterpriseId(Objects.toString(ythAuditWorkSystem.getReportOrgId(), null));
//                    detailVO.setEnterpriseName(ythAuditWorkSystem.getReportOrgName());
//                    detailVO.setInstitutionName(ythAuditWorkSystem.getAuditOrgName());
//                    detailVO.setInstitutionSystemName(ythAuditWorkSystem.getAuditSystemName());
//                    detailVO.setCreateCompanyId(Objects.toString(ythAuditWorkSystem.getReportOrgId(), null));
//                    detailVO.setDataSource(YTH_DATASOURCE_TYPE);
//                    detailVO.setDataSourceId(ythAuditWorkSystem.getId().toString());
//                    systemDetailList.add(detailVO);
//                }
//            }
//            systemVO.setSystemDetailList(systemDetailList);
//            iamWorkSystemVOList.add(systemVO);
//        }
//        return iamWorkSystemVOList;
//    }
//
//}
